package 第四章控制语句;

/*
 * 方法在执行过程中，JVM中的内存如何分配，如何变化？
 *   1、方法只定义不调用，是不会执行的，且在jvm中不会分配"运行所属"内存空间
 *      只有在调用这个方法的时候，才会动态的给这个方法分配所属的内存空间。
 *   2、JVM内存划分上有三块主要的内存空间（还有其他内存空间）：
 *       * 方法区内存
 *       * 堆内存
 *       * 栈内存
 *   3、关于栈数据结构
 *       *  栈：stack，栈的数据结构
 *       *
 *   4、方法代码片段存在哪里？方法执行的过程的内存在哪里分配？
 *       * 方法代码片段属于.class字节码文件的一部分，字节码文件在类加载的时候，将其放到了方法区当中，
 *         所以JVM中的三块主要的内存空间中方法区内存最先有数据，存放了代码片段
 *       * 方法代码片段虽然在方法内存区只有一份，但是可以重复调用
 *         每一次调用这个方法的时候，需要给该方法分配独立的活动空间，
 *         在栈内存中分配
 *   5、方法在调用的时候，会给该方法分配独立的内存空间，在栈中分配，此时发生进栈动作，当方法执行结束，
 *      分配的内存全部回收释放，此时发生出栈动作
 *           *进栈 ：分配内存
 *           *出栈 ：释放内存
 *   6、局部变量在栈中存储，运行阶段在栈中分配，局部变量在方法体中声明
 *
 *   方法调用的时候，参数传递时，传递的不是内存地址而是值
 *
 * */
public class MethodTest11 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int retValue = sumInt(a, b);
        System.out.println(retValue);
    }

    public static int sumInt(int a, int b) {
        int result = (a + b);
        int num = 3;
        int retValue = divide(result, num);
        return retValue;
    }

    public static int divide(int x, int y) {
        return (x / y);
    }
}
